package com.blue.rpc.client;

import java.util.List;
import java.util.Map;

import com.blue.rpc.core.message.RpcRequest;
import com.blue.rpc.util.RpcException;

/**
 * 客户端接口
 * 
 * @author zhengj
 * @since 1.0 2017年3月13日
 */
public interface RpcClient
{
	/**
	 * 启动客户端
	 */
	void start();
	
	/**
	 * 更新远程服务器连接
	 * 
	 * @param serviceMap
	 */
	void updateConnect(Map<String, List<String>> serviceMap);
	
	/**
	 * 停止客户端
	 */
	void stop();
	
	/**
	 * 调用接口
	 * 
	 * @param request
	 * @return
	 */
	public RpcClientFuture invoke(RpcRequest request) throws RpcException;
	
	/**
	 * 调用接口
	 * 
	 * @param request
	 * @param callback
	 * @return
	 */
	public RpcClientFuture invoke(RpcRequest request, RpcClientCallback callback) throws RpcException;
	
}
